// async
<template>
  <div>
    <prism language="javascript">
      // 备料
      function beiliao() {
      console.log("开始备料，预计用时5S");
      return new Promise(function(resolve, rejected) {
      //具体内容写在这里
      setTimeout(resolve, 5000, "mima"); //AJAX可以写在这里，5s之后执行Resolve函数，参数是'mima'
      });
      }
      //提取用料
      function tiqu(pwd) {
      if (pwd != "mima") {
      console.log("提取密码错误");
      return false;
      } else {
      console.log("开始备料，预计用时2S");
      return new Promise(function(resolve, rejected) {
      //具体内容写在这里
      setTimeout(resolve, 5000, "已取"); //AJAX可以写在这里，5s之后执行Resolve函数，参数是'mima'
      });
      }
      }
      //和面
      function huomian() {
      console.log("开始和面，预计用时5S");
      return new Promise(function(resolve, rejected) {
      //具体内容写在这里
      setTimeout(resolve, 5000, "和面完成"); //AJAX可以写在这里，5s之后执行Resolve函数，参数是'mima'
      });
      }
      //和馅
      function huoxian() {
      console.log("开始和馅，预计用时5S");
      return new Promise(function(resolve, rejected) {
      //具体内容写在这里
      setTimeout(resolve, 5000, "和馅完成"); //AJAX可以写在这里，5s之后执行Resolve函数，参数是'mima'
      });
      }
      //包饺子
      function baojiaozi() {
      console.log("开始包饺子，预计用时5S");
      return new Promise(function(resolve, rejected) {
      //具体内容写在这里
      setTimeout(resolve, 5000, "包饺子完成"); //AJAX可以写在这里，5s之后执行Resolve函数，参数是'mima'
      });
      }

      async function dp() {
      try {
      //购买原料
      let pwd = await beiliao();
      console.log("原料已放置提取柜，请凭密码获取");
      // console.log(pwd);
      //提取原料
      await tiqu(pwd);
      console.log("提取用料完成，可以开始了");
      //和面、和馅
      await Promise.all([huomian(), huoxian()]);
      console.log("和面，和馅完成");
      await "maicai";
      await "huomian";
      await baojiaozi();
      //    console.log("包饺子完成");
      return "chi";
      } catch (e) {
      //e和error都是表示错误的意思
      console.log(e);
      }
      }
      //自动转化为promise

      //异步之后执行
      dp().then(v => {
      console.log(v);
      });
    </prism>
    <v-btn
      round
      color="success"
      @click="run"
    >
      RUN
    </v-btn>
  </div>
</template>

<script>
import Prism from "vue-prism-component";
export default {
  components: {
    Prism
  },
  methods: {
    run() {
      // 备料
      function beiliao() {
        console.log("开始备料，预计用时5S");
        return new Promise(function(resolve, rejected) {
          //具体内容写在这里
          setTimeout(resolve, 5000, "mima"); //AJAX可以写在这里，5s之后执行Resolve函数，参数是'mima'
        });
      }
      //提取用料
      function tiqu(pwd) {
        if (pwd != "mima") {
          console.log("提取密码错误");
          return false;
        } else {
          console.log("开始备料，预计用时2S");
          return new Promise(function(resolve, rejected) {
            //具体内容写在这里
            setTimeout(resolve, 5000, "已取"); //AJAX可以写在这里，5s之后执行Resolve函数，参数是'mima'
          });
        }
      }
      //和面
      function huomian() {
        console.log("开始和面，预计用时5S");
        return new Promise(function(resolve, rejected) {
          //具体内容写在这里
          setTimeout(resolve, 5000, "和面完成"); //AJAX可以写在这里，5s之后执行Resolve函数，参数是'mima'
        });
      }
      //和馅
      function huoxian() {
        console.log("开始和馅，预计用时5S");
        return new Promise(function(resolve, rejected) {
          //具体内容写在这里
          setTimeout(resolve, 5000, "和馅完成"); //AJAX可以写在这里，5s之后执行Resolve函数，参数是'mima'
        });
      }
      //包饺子
      function baojiaozi() {
        console.log("开始包饺子，预计用时5S");
        return new Promise(function(resolve, rejected) {
          //具体内容写在这里
          setTimeout(resolve, 5000, "包饺子完成"); //AJAX可以写在这里，5s之后执行Resolve函数，参数是'mima'
        });
      }

      async function dp() {
        try {
          //购买原料
          let pwd = await beiliao();
          console.log("原料已放置提取柜，请凭密码获取");
          // console.log(pwd);
          //提取原料
          await tiqu(pwd);
          console.log("提取用料完成，可以开始了");
          //和面、和馅
          await Promise.all([huomian(), huoxian()]);
          console.log("和面，和馅完成");
          await "maicai";
          await "huomian";
          await baojiaozi();
          //    console.log("包饺子完成");
          return "chi";
        } catch (e) {
          //e和error都是表示错误的意思
          console.log(e);
        }
      }
      //自动转化为promise

      //异步之后执行
      dp().then(v => {
        console.log(v);
      });
    }
  }
};
</script>